#include<vector>
using namespace std;
//解题思路：
// 思路：选出左手套或者右手套中的手套至少有多少个才能够保证覆盖n种颜色？
// 其结果就是用左手套（右手套）的总的个数减去手套个数最少的某种颜色，再加1
// 即：min(leftSum-leftMin+1,rightSum-rightMin+1)
// 确定好一边的手套能够覆盖全部的颜色种类，那么另一边只需要选择一个任意颜色的手套就可以完成手套匹配了
class Gloves {
public:
    int findMinimum(int n, vector<int> left, vector<int> right) {
        int minsum=0;
        int lsum=0,rsum=0;
        int lmin=INT_MAX,rmin=INT_MAX;
        for(int i=0;i<n;i++)
        {
            if(left[i]*right[i]==0)
            {
                minsum+=left[i]+right[i];
            }
            else
            {
                lsum+=left[i];
                rsum+=right[i];
                lmin=left[i]<lmin?left[i]:lmin;
                rmin=right[i]<rmin?right[i]:rmin;        
            }
        }
        int min=(lsum-lmin+1)<(rsum-rmin+1)?(lsum-lmin+1):(rsum-rmin+1);
        return minsum+min+1;
    }
};